package awdc;

class HubList {
	Hub First;
	Hub Last;
	HubParametrs DefaultHubParametrs;//TODO допилить эту фишку с дефолтными параметрами
	//Конструктор
	HubList() {
		First = null;
		Last = null;
	}

	//Метод, добавляющий новый хаб к списку,
	void addHub(HubParametrs Parametrs){
		if (First!=null) {
			Hub NewHub;
			NewHub = new Hub(Parametrs);
			Last.Next = NewHub;
			Last = NewHub;
		} else {
			First = new Hub(Parametrs);
			Last = First;
		}
	}

	void addHub(String Address, int port, String Nick, String SharedDir){
		HubParametrs NewParams = new HubParametrs(Address, port, Nick, SharedDir);
		addHub(NewParams);
	}

	//Метод, выводящий список хабов
	void showHubs(){
		Hub Temp = First;
		System.out.println("This is a list of Hubs in the awdc:");
		while (Temp!=null) {
			Temp.showHub();
			Temp = Temp.Next;
		}
	}

	//Метод, удаляющий хаб
	void dropHubByAddress(String Address){
		Hub Temp = First;
		Hub Before=First;
		Hub After;
		if (Address.equals(First.getAddress())){
			First=First.Next;
		} else {
			Temp = First.Next;
			while (Temp!=null) {
				
				if (Address.equals(Temp.getAddress())){
					if (Last == Temp)
						Last = Before;
					Before.Next = Temp.Next;
				} else {
					Before = Temp;
				}
				Temp = Temp.Next;
			}
		}
	}
	
	//Метод - соединение с хабом по адресу такому-то
	void connectToHub(String Address){
		Hub Temp = First;
		while (Temp!=null && !(Address.equals(Temp.getAddress())))
			Temp = Temp.Next;
		if (Temp!=null)
			Temp.login();
		else
			System.out.println("Couldn't find such hub in list.");
	}

}
